package cn.com.yang.server.jetty;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;

/**
 * 
 * Jetty Handler 处理请求
 * @author yangyijin
 * @since 2023年5月18日-上午8:56:10
 */
public class JettyHelloHandler extends AbstractHandler{
	final String greeting;
	final String body;
	public JettyHelloHandler() {
		this("Hello wolrd");
	}

	public JettyHelloHandler(String greeting) {
		this(greeting,null);
	}

	public JettyHelloHandler(String greeting, String body) {
		this.greeting = greeting;
		this.body = body;
	}

	/**
	 * 给handler传参的方式。
	 * target -请求目标，它是URI或命名调度程序的名称。
	 * baseRequest -Jetty可变请求对象，没有被包装的request对象。
	 * request-不可变请求对象，可能已被filter或者servlet对象包装。
	 * response -响应，可能已被过滤器或者servlet包装。
	 * Handler设置响应状态，内容类型,并在使用writer生成响应主体之前将请求标记为已处理。
	 */
	@Override
	public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		response.setContentType("text/html; charset=utf-8");
		response.setStatus(HttpServletResponse.SC_OK);
		PrintWriter out = response.getWriter();
		out.print("<h1>"+target+"</h1>");
		out.print("<h1>"+request.getContextPath()+"</h1>");
		if (this.body !=null) {
			out.print("<h1>"+this.body+"</h1>");
		}
		baseRequest.setHandled(true);
	}
}	
